کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Resource Selector انتخاب گرهای منابع دراندروید

 

clip_image001

دوره آموزش برنامه نویسی اندروید

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

 

آموزش Resource Selector انتخاب گرهای منابع دراندروید  

این مقاله ی آموزشی نحوه ی کارکرد resource selector  ها در اندروید را برای شما برنامه نویسان عزیز اندروید تصریح می کند. همچنین در این بخش چگونگی پشتیبانی از صفحه نمایش های با اندازه ها، زبان ها و چگالی های متفاوت تصاویر آشنا می شوید.

فهرست محتوا

1. پیکربندی های دستگاه اندروید

مدیریت و برخورد با نحوه های مختلف پیکربندی در دستگاه های متفاوت اندروید

استفاده از resource qualifier ها جهت انتخاب منابع متناسب با پیکربندی های مختلف

2.  Resource qualifierهای مهم و متعارف

استفاده از چگالی تصویر یا صفحه نمایش به عنوان resource qualifier (انتخاب کننده ی منبع)

استفاده از جهت نمایش (orientation) به مثابه ی resource qualifier

انتخاب منبع بر پایه ی ویرایش های مختلف اندروید

انتخاب منبع مورد نیاز براساس درازا و پهنای صفحه نمایش

3. Strings and Translations

پشتیبانی اندروید از plural ها

استفاده از ترجمه ی ماشینی (Google translate)

4. چگالی (تراکم پیکسلی( صفحه نمایش

چرا باید چگالی یا تراکم پیکسلی در صفحه نمایش را در نظر گرفته و مدیریت کرد؟

استفاده از چگالی صفحه نمایش به عنوان resource qualifier

اندازه ی آیکون ها

5. تعریف اندازه ی مولفه های رابط کاربری (UI) در فایل طرح بندی (layout file)

ابعاد ثابت و نسبی

بکاربری dp (پیکسل بندی مستقل از چگالی صفحه دستگاه) به عنوان بعد نسبی

استفاده از sp (پیکسل بندی مستقل از مقیاس دستگاه) جهت تنظیم مقیاس متناسب با تنظیمات انتخابی کاربر مربوط به متن

6. تعریف و تنظیم اندازه ی مولفه های رابط کاربری (UI component) در متن برنامه (source code)

7. fragment ها

1. پیکربندی های دستگاه اندروید

مدیریت و برخورد با نحوه های مختلف پیکربندی در دستگاه های متفاوت اندروید

دستگاه های اندروید با انواع متمایز و متعدد پیکربندی ها در بازار عرضه می شود، از جمله ی آن ها اندازه ی صفحه نمایش، تراکم یا چگالی پیکسلی و تنظیمات مربوط به زبان گوشی هست.

به منظور فراهم سازی منابع و تنظیمات مناسب برای این پیکربندی های به طور کامل متفاوت و پشتیبانی از آن ها سیستم اندروید این اجازه را به دستگاه می دهد که منابع (resources) و اندازه ی مولفه های رابط کاربری را در قالب بندی نسبی (device independent pixels) به صورت خودکار تنظیم کند.

استفاده از resource qualifier ها جهت انتخاب منابع متناسب با پیکربندی های مختلف

 اندروید به برنامه نویس اجازه می دهد با استفاده از resource qualifier (تعریف کننده ی منابع مورد نیاز( منابع را متناسب با ویژه گی های دستگاه مورد نظر انتخاب کند (برای مثال پیکربندی خاص از جمله جهت قرار گیری صفحه، زبان وضوح تصویر معین تنها ویژه ی دستگاهی با خصوصیات مشخص بکار گرفته شود). جهت ارائه ی فایل های منبع متفاوت (resource file)، برای مثال طرح بندی های لازم برای پیکربندی هایی که انتخاب گر  qualifier توصیف کرده، باید یک زیرپوشه در فولدر res با استفاده از این qualifier ایجاد کنید، برای مثال layout-qualifier ویژه ی طرح بندی ها.

 نکته

اندروید خود فایل مناسب را به صورت خودکار بر اساس پیکربندی جاری انتخاب می کند.

2. Resource qualifierهای مهم و متعارف

استفاده از چگالی تصویر یا صفحه نمایش به عنوان resource qualifier  (انتخاب کننده ی منبع)

فرض کنید می خواهید یک شِمای کلی (layout) را ویژه ی activity در حالت (نمای) افقی بکارببرید و فایل طرح بندی نیز activity_main.xml نام دارد. در این مورد پوشه ی res/layout-land را ایجاد کرده و فایل طرح بندی جدید را با همین اسم   (activity_main.xml)داخل این پوشه جای گذاری کنید.

انتخاب منبع بر پایه ی ویرایش های مختلف اندروید

انتخاب منبع همچنین می تواند مبتنی بر نسخه ی اندروید صورت گیرد، این نوع انتخاب خود بر پایه ی تعریف کننده  -v[minimum API level] می باشد. برای مثال، شما می توانید تم ها و سبک بندی های متنوعی بر اساس ویرایش جدید رابط برنامه سازی کاربردی (API) اندروید انتخاب و طراحی کنید.

نمونه ی بارز آن استفاده از تعریف کننده یا انتخاب گر (qualifier) نام برده ویژه ی تعریف سبک بندی مبتنی بر ورژن اندروید است.

انتخاب منبع مورد نیاز براساس درازا و پهنای صفحه نمایش

  فاکتور دیگری که انتخاب و تعریف منبع بر اساس آن صورت می گیرد، کوچکترین یا کمترین پهنای موجود صفحه / گزینش بر اساس پهنای موجود صفحه نمایش می باشد. منظور از smallest available width، کمترین یا کوتاه ترین درازای موجود صفحه و مقصود از پهنای موجود (available width) نیز پهنای واقعی است که متناسب با حالت یا جهت نمایش (نمای افقی و عمودی) دستگاه تنظیم می شود.

گزینش مبتنی بر پهنا (width selection) می تواند، به عنوان نمونه، جهت ارائه ی طرح بندی های متنوع بر اساس پهنای موجود صفحه نمایش مورد استفاده قرار داده شود. این گزینش بر پایه ی تعریف کنندهای -sw[Number]dp (کوچکترین) یا -w[Number]dp صورت می پذیرد، لازم بذکر است که منظور از [Number] تعداد پیکسل های مستقل از دستگاه می باشد. به طور مثال برای تبلتی که دارای صفحه نمایش 7 اینچی و 600 پیکسل مستقل از دستگاه است، می توانید به وسیله ی انتخاب گر (selector) res/layout-sw600dp/ طرح بندی های مناسب و متنوعی ویژه ی آن تبلت فراهم کرد.

3. Strings and Translations (ترجمه ی رشته)

همچنین می توان از انتخاب گرهای منابع (resource selector) برای پوشه ی Values استفاده کرد که دربردارنده ی، به طور مثال، مقادیر رشته (string value) است. کافی است برای این منظور پوشه ی values-qualifier را بکارببرید.

به عنوان مثال، برای ارائه ی منابع متنی (مبتنی بر متن / text resources) انگلیسی یا آلمانی، از پوشه های values-en و values-de استفاده می کنیم.

پشتیبانی اندروید از  plural ها

سیستم اندروید قابلیت پشتیبانی از plural ها را نیز دارد. Plural ها در حقیقت منابعی مبتنی بر XML هستند که امکان اداره ی مقادیر و کمیت های مختلف را فراهم می کنند، بدین روش شما می توانید متن مد نظر (مناسب) را مبنی بر کمیت مربوطه انتخاب کنید. در واقع کاری که برنامه نویس می کند این است که مقادیری را ویژه ی کمیت های " zero "، " one "، " two "، " many "، " other" در فایل XML خویش و در کد نیز متد getQuantityString() را به منظور دستیابی به مقدار صحیح مشخص می کند.

می توان رشته ها را قالب بندی (format) کرد. پس از اتمام قالب بندی رشته ها، می توان منابع plural و عدد مورد نظر (number) را به داخل رشته ارسال کرد. در صورتی که قرار است اشیا برای قالب بندی بکار برده شوند، باید آن ها را به عنوان پارامترهای اضافی ارسال کنید.

<?xml version="1.0" encoding="utf-8" ?>

‎‎<resources>

<plurals name="tutorials">

<item quantity="zero">no Tutorial </item>

<item quantity="one">one Tutorial </item>

<item quantity="other">%d  Tutorials</item>

</plurals>

</resources>

به طور مثال کد زیر یک plural تعریف می کند. این فایل باید داخل پوشه ی “res/values” جای گذاری گردد و در این مثال “plurals” نامیده شده است.

// number is defined somewhere before this 
       
// number =.... 
       
// get the Resources 
       
Resources res = getResources();
       
// get the 
       
String quantityString = res.getQuantityString(R.plurals.tutorials،
            number، number);
       
// do something with it...

توجه داشته باشید که گزینش (selection) در این بخش بر اساس نیازهای گرامری صورت گرفته است. یک رشته برای صفر در انگلیسی به طور کامل نادیده گرفته می شود حتی اگر هم کمیت 0 باشد زیرا که 0 از لحاظ گرامری یا ترکیب نحوی هیچ تفاوتی با 2، 3 یا هر عدد دیگری به جز عدد 1 ندارد (“no tutorial”، “one tutorial”،“two tutorials”).

استفاده از ترجمه ی ماشینی (Google translate)

یا می توانید رشته را دستی خود ترجمه کنید و یا می توانید آن را به کمک ماشین ترجمه کنید.

با این که بهره گیری از ترجمه ی ماشینی چندان توصیه نمی شود و طرفدار زیادی ندارد، گاهی مواقع می تواند یک نقطه ی شروع خوبی باشد، به خصوص اگر برنامه نویس برای توسعه و عرضه ی برنامه ی کاربردی از نظر مالی در مضیقه باشد.                                                                                                                                  

4. چگالی (تراکم پیکسلی( صفحه نمایش

چرا باید چگالی یا تراکم پیکسلی در صفحه نمایش را در نظر گرفته و مدیریت کرد؟

صفحه نمایش دستگاه های اندروید از نظر وضوح تصویر و تراکم پیکسلی به طور طبیعی با هم فرق هایی دارند.

در زمینه ی چگالی های متفاوت صفحه نمایش مولفه ی رابط کاربری (UI component) با همان طول، متشکل از تعداد متفاوتی پیکسل است.

image

استفاده از همین پیکسل بندی (همان تعداد پیکسل) در دستگاهی با تراکم پیکسلی بیشتر ممکن است منجر به رابط کاربریی با گرافیک غیر قابل استفاده تبدیل شود.

image

برای این منظور باید منابع گرافیکی (graphical resources)، برای مثال آیکون های launcher و action bar، را با وضوح های (تصویری) متفاوت عرضه کرد. این امر را می توان با استفاده از resource qualifier ها (تعریف و انتخاب منبع) بر حسب پیکسل ترتیب داد.

استفاده از چگالی صفحه نمایش به عنوان resource qualifier

می توان از چگالی به مثابه ی resource qualifier بهره گرفت (اندروید از گزینه های زیر پشتیبانی می کند). پایه (baseline) 160 نقطه بر حسب / در اینچ (dpi یا dot per inch) می باشد. اگر به طور مثال دستگاه مد نظر 320 dpi (320 نقطه در هر اینچ) باشد، Drawable از drawable-hdpi انتخاب می شود.

  جدول 1. انتخاب منبع بر حسب چگالی

Density selector (تنظیم گر چگالی / تراکم) 

معادل 

Ldpi 

160 dpi x 0.75

mdpi 

160 dpi

hdip 

1.5 x 160 dpi = 240 dpi

xhdpi 

2 x 160 dpi = 320 dpi

xxhdpi 

3 x 160 dpi = 480 dpi

xxxhdpi 

4 x 160 dpi = 640 dpi

 

اندازه ی آیکون ها

باید آیکون های launcher (اجرا کننده)، action bar، notification bar (نوار اطلاع رسانی( را در پنج اندازه ی معمول زیر عرضه شوند.

Icons 

mdpi 

hdpi 

xhdpi 

xxhdpi 

xxxhdpi 

Launcher icon 

48 px

72 px

96 px

144 px

192 px

Action bar icon 

32 px

48 px

64 px

96 px

128 px

Notification icon  

24 px

36 px

48 px

72 px

96 px

آیکون Launcher باید در 512x512 px نیز برای برنامه ی منتشر شده در محیط فروشگاه مجازی گوگل عرضه شود.

5. تعریف اندازه ی مولفه های رابط کاربری (UI) در فایل طرح بندی (layout file)

ابعاد ثابت و نسبی

سیستم اندروید با امکاناتی که دارد به شما اجازه می دهد اندازه ی اجزاء رابط کاربری (UI component) را در ابعاد نسبی (relative) و ثابت (fixed) در فایل طرح بندی مشخص کنید. در صورت استفاده از ابعادی با اندازه های ثابت، برای مثال پیکسل ها، رابط کاربری شما ممکن است در یک دستگاه مناسب باشد اما در دستگاهی با تراکم پیکسلی بیشتر دکمه ی مورد نظر بسیار کوچک جلوه کرده و ناکارامد باشد. از این رو به شما پیشنهاد می کنیم تا حد ممکن از ابعاد نسبی در اپلیکیشن های خود بهره بگیرید.

بکاربری dp (پیکسل بندی مستقل از دستگاه) به عنوان relative dimension

واحد اندازه گیری که باید مورد استفاده قرار گرفته شود dp می باشد.

نکته

dp مخفف dip می باشد (یا به عبارتی دیگر device independent pixel = پیکسل بندی مستقل از دستگاه(

در واقع dp به یک پیکسل در دستگاه اندرویدی با 160dpi (160 پیکسل در هر اینچ = dots per inch) اشاره دارد. تراکم پیکسلی نام برده متعلق به اولین دستگاه اندروید عرضه شده است (G1). این اندازه به سرنام دیگری نیز شهرت دارد و آن mdpi (medium dots per inch) است.

اگر اندازه را بر حسب واحد اندازه گیری dp تنظیم کنید، اندروید خود به صورت خودکار مولفه ی رابط کاربری را (بسته به نوع دستگاه) مقیاس بندی می کند.

در دستگاهی با تراکم پیکسلی متوسط (mdpi) یک dp دقیق برابر با یک پیکسل است. یک dp در دستگاهی با تراکم پیکسلی پایین (ldpi) کمتر است (حدود 120dip)، در دستگاهی با تراکم پیکسلی بالا (hdpi) بزرگتر است (حدوداً 240dpi). بدین ترتیب یک dp تقریباً همان مقدار فضا را در کلیه ی دستگاه ها اشغال می کند.

این امکان وجود دارد که از این واحد اندازه گیری (dp) در منابع از جمله فایل طرح بندی استفاده کرد.

استفاده از sp (پیکسل بندی مستقل از مقیاس دستگاه) جهت تنظیم مقیاس متناسب با تنظیمات انتخابی کاربر مربوط به متن

چنانچه لازم است واحد اندازه گیری با تنظیمات انتخابی کاربر مرتبط با متن ( منظور آن اندازه ی فونتی است که توسط کاربر در تنظیمات سیستم تعریف می شود) تنظیم و مقیاس بندی شود، بهتر است از واحد اندازه گیری sp (scale-independent pixel) برای این مقصود استفاده کرد. واحد اندازه بندی مذکور بسیار شبیه به واحد dp است با این تفاوت که مطابق با نیاز و تنظیمات کاربر نیز قابلیت مقیاس بندی دارد.

در صورتی که کاربر تصمیم بگیرد اندازه ی فونت را در بخش تنظیمات سیستم افزایش دهد (بزرگتر کند)، view هایی که از sp بهره می گیرند مطابق با اصلاحات انجام شده تغییر می یابد.

6. تعریف و تنظیم اندازه ی مولفه های رابط کاربری (UI component) در متن برنامه (source code)

API اندروید پی در پی از شما می خواهد اندازه را بر حسب پیکسل مشخص کنید و از پذیرفتن dp به عنوان ورودی (input) امتناع می ورزد. در چنین مواقعی شما باید dp دلخواه خود را به پیکسل تبدیل کنید.

می توانید با استفاده از متد زیر تعداد صحیح پیکسل ها را برای بعدی (dimension) که بر حسب dp تعیین شده محاسبه کرده و بدست آورید.

public int convertToPixelFromDp(int dpInput) {
// get the screen's density scale
final float
scale = getResources().getDisplayMetrics().density;
       
// convert the dps to pixels
، based on density scale
       
return (int) (dpInput * scale + 0.5f
);
        }

تراکم پیکسلی دستگاه جاری را می توان با فراخوانی متد زیر پرسمان (query) کرده و بدست آورد.

getResources().getConfiguration().densityDpi;

1394/07/27 4627 1872
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...